#pragma once
#include<iostream>
#include<vector>
#include<list>

namespace myqueue{

    template<class T, class Container = std::list<T>>
    class queue{
        private: 
        Container _que;
        public:
        void push(const T& val)
        {
            _que.push_back(val);
        }
        void pop()
        {
            _que.pop_front();
        }
        const T& back()
        {
            return _que.back();
        }
         const T& front()
        {
            return _que.front();
        }
        bool empty()
        {
            return _que.empty();
        }
        size_t size()
        {
            return _que.size();
        }
        void swap(queue& val)
        {
            _que.swap(val._que);
        }
    };
}